<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 与运算符 -->
    <script>
        //如果只有两个表达式的话， 先看第一个表达式转换成布尔值的结果，如果结果为真，那么它会返回第二个表达式的结果。
        //如果结果为假，直接返回第一个表达式的值。
        var a = 1 && 2;
        console.log(a);
        // 和两个表达式一样，依次往后看，遇见为假则返回，若前面都为真，返回最后一个表达式的值
        var b = 0 && 1 && 2;
        console.log(b);
        var c = 1 + 1 && 1 - 1;//注意优先级顺序
        console.log(c);

        var d = 1 && console.log("白志刚很帅");// 会执行语句，返回undefined
        1 & 3 //没卵用，按位与
    </script>


    <!-- 或运算符 -->
    <script>
        // 第一个表达式转换成布尔值为真，直接返回第一个表达式的值
        // 第一个表达式转换成布尔值为假，返回第二个表达式的值
        var num = 0 || false;
        console.log(num);
        var num1 = 0 || false || 1;
        console.log(num1);
    </script>

    <!-- 非 -->
    <script>
        var aa = !"";
        console.log(aa); // 变成布尔值取反，结果为布尔值
        var bb = !!0;  // 意思相当于把0变成布尔值
        console.log(bb);

        var cc = true;
        cc = !cc;
        console.log(cc);
    </script>
</body>
</html>